昨天討論到例外,而此篇將大致說明對於例外的處理~
try {
程式敘述
}catch(例外類別 例外物件名稱){
例外處理的程式碼
}finally{
一定會處理的區塊
}
語法解釋:
try{ 區塊範圍內的程式發生例外才會攔截}
catch{處理例外發生的程序}
finally{無論是否發生例外皆會執行程序}
程式範例試做:
import java.util.*;
public class Alex0930_1{
public static void main(String[] args){
try{
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入分子數:");
int a = scanner.nextInt();
System.out.print("請輸入分母數:");
int b = scanner.nextInt();
System.out.println(a+"除以"+b+"等於:"+a/b);
}catch (ArithmeticException e){
System.out.println("除數不可為0");
}catch (InputMismatchException e){
System.out.println("輸入的數值必須為整數數值");
}
}
}
(1) 分母為零
請輸入分子數:20
請輸入分母數:0
除數不能為0
(2) 輸入非整數值
請輸入分子數:20
請輸入分母數15.5
輸入的數值必須為整數數值
2.攔截的簡化發生例外時,catch如果沒有指定攔截該例外,則程式就不會做任何處理,會直接當掉。
import java.util.*;
public class Alex0930_2 {
public static void main(String[] args){
try{
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入分子數:")
int a = scanner.nextInt();
System.out.print("請輸入分母數:");
int b = scanner.nextInt();
System.out.println(a+"除以"+b+"等於:"+a/b);
}catch (Exception e){
System.out.println("執行發生例外");
}
}
}
3.例外類別的方法
回傳值類型 | 方法 | 功用 |
---|---|---|
throwable | getCause | 取得此例外的Throwable物件,已獲得例外的原因,如果原因不存在或是知,則回傳null。 |
String | getLocalizedMessage() | 取得此例外的Throwable物件的局部描述。 |
String | getMessage() | 取得此例外物件的說明訊息。 |
String | toString() | 取得此例外物件的名稱與簡短說明訊息。 |